package idea.innovacion.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import idea.innovacion.bean.IdeaDTO;
import idea.innovacion.bean.PerfilDTO;
import idea.innovacion.bean.UsuarioDTO;
import idea.innovacion.interfaces.IIdeaDAO;
import idea.innovacion.util.ConexionDB;


public class MySqlIdeaDAO implements IIdeaDAO {

	@Override
	public boolean insertIdea(IdeaDTO dto) throws SQLException {
		// TODO Auto-generated method stub
		boolean retorno;
		IdeaDTO objIdea = null;
		String sql = null;
		Connection conn = null;
		sql = "Insert Idea values (?,?,?,?,?,?,?,?,?,?,?,?)";
		
        conn = ConexionDB.GetConnection();
		
		PreparedStatement pstm = conn.prepareStatement(sql);
		pstm.setInt(1, dto.getIdIdea());
		pstm.setString(2, dto.getTitulo());
		pstm.setString(3, dto.getDescripcion());
		pstm.setString(4, dto.getPalabraClave01());
		pstm.setString(5, dto.getPalabraClave02());
		pstm.setString(6, dto.getPalabraClave03());
		pstm.setString(7, dto.getPalabraClave04());
		pstm.setString(8, dto.getFechaHora());
		pstm.setString(9, dto.getEstado());
		pstm.setString(10, dto.getSubirArchivo());
		pstm.setInt(11, dto.getIdUsuarioEstudiante());
		pstm.setInt(12, dto.getIdUsuarioDocente());

		retorno = pstm.execute();
		
		return retorno;
	}

	@Override
	public void deleteIdea(IdeaDTO dto) throws SQLException {
		// TODO Auto-generated method stub
		
		IdeaDTO objIdea = null;
		String sql = null;
		Connection conn = null;
		sql = "Delete from Idea where IdIdea=?";
		
        conn = ConexionDB.GetConnection();
		
		PreparedStatement pstm = conn.prepareStatement(sql);
		pstm.setInt(1, dto.getIdIdea());
		pstm.execute();
	}

	@Override
	public ArrayList<IdeaDTO> listIdea() throws SQLException {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public ArrayList<IdeaDTO> listIdea(String campo, String estado) throws SQLException {
		String sql = null;
		ArrayList<IdeaDTO> listIdeas = new ArrayList<IdeaDTO>();
		ResultSet rs;
		Connection conn = null;
		sql = " select IdIdea, Titulo,  Descripcion, FechaHora, Estado, IdUsuarioDocente, IdUsuarioEstudiante from idea "+
			  " where (Titulo like '%"+campo+"%' or "+
				     " Descripcion like '%"+campo+"%' or "+
				     " PalabraClave01 like '%"+campo+"%' or "+
				     " PalabraClave02 like '%"+campo+"%' or "+
				     " PalabraClave03 like '%"+campo+"%' or "+
				     " PalabraClave04 like '%"+campo+"%' ) and "+
				     " Estado = '"+estado+"'";
		
        conn = ConexionDB.GetConnection();
		
		PreparedStatement pstm = conn.prepareStatement(sql);		
	  /*pstm.setString(1, campo);
		pstm.setString(2, campo);
		pstm.setString(3, campo);
		pstm.setString(4, campo);
		pstm.setString(5, campo);
		pstm.setString(6, campo);
		pstm.setString(7, estado);*/
		
		//Ejecutamos El Query		
		rs = pstm.executeQuery(sql);
		
		//Recorremos el ResultSet
		while(rs.next()) {
			//Lo guardamos en un objeto
			IdeaDTO idea = new IdeaDTO();
											
			//Lo Guardamos en Objeto temporal
			idea.setIdIdea(rs.getInt(1));
			idea.setTitulo(rs.getString(2));
			idea.setDescripcion(rs.getString(3));
			idea.setFechaHora(rs.getString(4));
			idea.setEstado(rs.getString(5));
			idea.setIdUsuarioDocente(rs.getInt(6));
			idea.setIdUsuarioEstudiante(rs.getInt(7));
			
			//Lo agregamos a la lista temporal
			listIdeas.add(idea);
							
		}
		return listIdeas;
	}

	@Override
	public Integer getTituloIdea(String titutlo) throws SQLException {
		// TODO Auto-generated method stub
		Integer resultado = null;
		String sql = null;
		Connection conn = null;
		sql = "Select count(*) as cantidad From Idea Where Titulo=?";
		ResultSet rs = null;
        conn = ConexionDB.GetConnection();
		
		PreparedStatement pstm = conn.prepareStatement(sql);
		pstm.setString(1, titutlo);
		rs = pstm.executeQuery();
		if(rs.next()){
			resultado = rs.getInt("cantidad");
		}
		return resultado;
	}

	@Override
	public void updateIdea(IdeaDTO dto) throws SQLException {
		// TODO Auto-generated method stub
	
		String sql = null;
		Connection conn = null;
		sql = "Update Idea set Estado='PUBLICADA' where IdIdea=? and Estado= 'CREADA'";
		
        conn = ConexionDB.GetConnection();
		
		PreparedStatement pstm = conn.prepareStatement(sql);
		pstm.setInt(1, dto.getIdIdea());
		pstm.execute();	
		
		
	}
	
	
	
}
